<?php

/**
 * md5 密码加密算法
 * 需配合应用设置中 'app_salt' 加盐
 * @author 杨栋森 mutoe@foxmail.com at 2016-07-14
 *
 * @param  [string] $value [待加密字符串]
 * @return [string]        [md5摘要后的字符串]
 */
function password($value)
{
    $value .= config('app_salt');
    return md5($value);
}

/** 随机生成字符串
 * @author 杨栋森 mutoe@foxmail.com at 2016-07-19
 *
 * @param  integer $length 字符串长度
 * @return string
 */
function get_random_string($length = 32)
{
    $str = null;
    $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
    $max = strlen($strPol) - 1;

    for ($i = 0; $i < $length; $i++) {
        $str .= $strPol[rand(0, $max)]; //rand($min,$max)生成介于min和max两个数之间的一个随机整数
    }

    return $str;
}

/**
 * 登陆状态查询
 * @author 杨栋森 mutoe@foxmail.com at 2016-07-19
 *
 * @param  string  $return_type 返回的类型
 *                 email:       返回用户邮箱
 *                 username:    返回用户昵称
 *                 user_id:     返回用户id
 * @return boolean false: 未登录
 *                 null:  错误的参数
 */
function is_login($return_type = 'email')
{
    $email = session('email');
    if (!$email) {
        return false;
    }
    switch ($return_type) {
        case 'email':
            return $email;
            break;
        case 'username':
            $user = model('User');
            return $user->where(['email' => $email])->value('username');
            break;
        case 'user_id':
            $user = model('User');
            return $user->where(['email' => $email])->value('user_id');
            break;
        default:
            return null;
            break;
    }
}

/**
 * 计算时间差并返回动态时间字符串
 * 可显示的动态时间有秒、分钟、小时、天、周、月、年
 * @author 杨栋森 mutoe@foxmail.com at 2016-07-23
 *
 * @param  int $timestamp 目标时间
 * @param  int $now_time  当前时间 default: 当前服务器时间
 * @return string  "n 天/周/月/年"
 */
function get_time_diff($timestamp, $now_time = 0)
{
    if (!$now_time) {
        $now_time = time();
    }
    if ($timestamp < $now_time) {
        throw new \think\Exception('目标时间不能比当前时间小');
    }
    $diff = $timestamp - $now_time;
    if ($diff < 60) {
        return floor($diff) . " 秒";
    }
    $diff /= 60;
    if ($diff < 60) {
        return floor($diff) . " 分钟";
    }
    $diff /= 60;
    if ($diff < 60) {
        return floor($diff) . " 小时";
    }
    $diff /= 24;
    if ($diff < 24) {
        return floor($diff) . " 天";
    }
    if ($diff < 24 * 7) {
        $diff /= 7;
        return floor($diff) . " 周";
    }
    if ($diff < 24 * 30) {
        $diff /= 30;
        return floor($diff) . " 个月";
    }
    $diff /= 365;
    return floor($diff) . " 年";
}
